package com.zwf.langchain4j.assistant;

import dev.langchain4j.service.MemoryId;
import dev.langchain4j.service.UserMessage;
import dev.langchain4j.service.V;
import dev.langchain4j.service.spring.AiService;
import dev.langchain4j.service.spring.AiServiceWiringMode;

/**
 * 模型实现聊天记忆
 * 当AIService由多个组件（大模型，聊天记忆，等）组成的时候，我们就可以称他为 智能体 了
 */
@AiService(
        wiringMode = AiServiceWiringMode.EXPLICIT,
        chatModel = "qwenChatModel",
        chatMemory = "chatMemory"
)
public interface MemoryChatAssistant {

    @UserMessage("你是我的好朋友，请用湖南话回答问题，并且添加一些表情符号，{{it}}")//{{it}}表示这里唯一的参数的占位符
    String chat(String userMessage);

    // @V注解用于指定方法参数的名称，有两个或两个以上的参数，必须要用@V
    @UserMessage("你是我的好朋友，请用粤语回答问题。{{message}}")
    String chat2(@MemoryId int memoryId, @V("message") String userMessage);
}
